<?php
namespace Crud\Delete;

use Pinenut\Form;
use Crud\Delete\ButtonAction;

/**
 * Удаляем
 *
 * @author kosh
 *
 */
class FormAction extends \Forms\FormAction {
	protected static $isPublic = true;
	
	protected static $_crudConfigClass;
	protected static $layout = "#layouts.modal";//#layouts.common";
	
	// тут мы говорим какую вызывать вьюху.
	protected static $defaultViews = ['#crud.delete.form'];

	protected $model;

	/**
	 * Указываем необходимые неявные параметры
	 * @return multitype:string
	 */
	static function pullParams() {
		return array_merge(parent::pullParams(), ['sessionId']);
	}

	protected function getFormId()
	{
		return static::$_crudConfigClass;
	}

	protected function getFormConfig()
	{
		// FIXME: это какой-то ёбаный стыд - перестаёт работать позднее статическое связывание
		/// после того как я файнд делаюю ниже, поэтому загрузку конфы выношу сюда
		$class = static::$_crudConfigClass;
		$formConfig = $class::getDeleteForm();

		$modelClass = $class::get('model');

		// получаем trip
		$id = $this->request->id;
		$this->model = $modelClass::find($id);

		if (!$this->model) {
			throw new \Exception('Entity not found');
		}


		return $formConfig;
	}

	public function getFormAction() {
		return  $this->url($this->request->action, ['id' => $this->request->id]);
	}

	protected function onFormProcess()
	{
		// уже проверили что всё ок
		$this->model->remove();
		$this->form->flush();
		$this->response->noRender(true);
	}

	protected function onGetRequest()
	{
		$this->form->setValues($this->model->toArray());
	}

	protected function onEndRun()
	{
		$this->response->form = $this->form;
	}


	/*protected function run()
	{
	
		// отрубаем кеширование если пост-запрос
		if ($this->request->_isPost) {
			$this->response->noCache(true);
		}
		
		// FIXME: это какой-то ёбаный стыд - перестаёт работать позднее статическое связывание
		/// после того как я файнд делаюю ниже, поэтому загрузку конфы выношу сюда
		$class = static::$_crudConfigClass;
		$formConfig = $class::getDeleteForm();

		$modelClass = $class::get('model');

		// получаем trip
		$id = $this->request->id;
		$model = $modelClass::find($id);
		
		if (!$model) {
			throw new \Exception('Entity not found');
		}		
		
		$formConfig['htmlOptions']['action'] = $this->url($this->request->action, ['id'=>$id]);
		$form = new Form ( $this->request->_identity, $class, $formConfig);
		if ($this->request->_isPost && $this->request->isPartial) {
			$form->process($this->request->params(), true);
			$this->response->content =  $form->render();
			$this->response->noRender(true);
			return;

		} else if ($this->request->_isPost) {
			if (!$form->process($this->request->params())) {
				$this->response->form = $form;
				return;
			}
			// уже проверили что всё ок
			$model->remove();			
			$form->flush();	
			$this->response->noRender(true);
		} else {
			$form->setValues($model->toArray());
		}
		$this->response->form = $form;

	}*/
}